/**
 * add by liuweiqing 2024/11/27
 * 自定义拦截器
 */
import {
	LOGININFO_KEY,
	ACCESS_TOKEN_KEY
} from '@/common/const/index';

// 页面白名单，不受拦截
const whiteList = [
	'/pages/sys/login/login',
	'/pages/sys/scancode/index',
	'/pages/sys/server/server',
	'/pages/sys/test/wecomTest/wecomTest'
]

function hasPermission(url) {
	// 获取本地缓存的登录信息
	let access_token = uni.getStorageSync(ACCESS_TOKEN_KEY);
	// 在白名单中或有登录判断条件可以直接跳转
	if (whiteList.includes(url.split('?')[0]) || access_token) {
		return true
	}
	return false
}

// 遍历给路由方法添加拦截器
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
list.forEach(item => {
	// 页面跳转拦截器
	uni.addInterceptor(item, {
		// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
		invoke(e) {
			if (!hasPermission(e.url)) {
				uni.showToast({
					title: '您还未登录，请先登录！',
					duration: 1000,
					icon: 'none'
				})
				uni.navigateTo({
					url: '/pages/sys/login/login'
				})
				return false
				console.log(e.url);
			}
			return true
		},
		fail(err) { // 失败回调拦截 
			console.log(err);
		},
	})

})